home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / SETUP / US / CBUILDER / DATA.Z / OLEAUTO.H < prev    next >
C/C++ Source or Header  |  1997-02-13  |  33KB  |  780 lines

  1. //+---------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1992 - 1996.
  5. //
  6. //  File:       oleauto.h
  7. //
  8. //  Contents:   Defines Ole Automation support function prototypes, constants
  9. //
  10. //----------------------------------------------------------------------------
  11.  
  12. #if !defined( _OLEAUTO_H_ )
  13. #define _OLEAUTO_H_
  14. #pragma option -b
  15.  
  16. // Set packing to 8 for ISV, and Win95 support
  17. #ifndef RC_INVOKED
  18. #pragma option -b.
  19. #include <pshpack8.h>
  20. #pragma option -b
  21. #endif // RC_INVOKED
  22.  
  23. //  Definition of the OLE Automation APIs, and macros.
  24.  
  25. #ifdef _OLEAUT32_
  26. #define WINOLEAUTAPI        STDAPI
  27. #define WINOLEAUTAPI_(type) STDAPI_(type)
  28. #else
  29. #define WINOLEAUTAPI        EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
  30. #define WINOLEAUTAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
  31. #endif
  32.  
  33. EXTERN_C const IID IID_StdOle;
  34.  
  35. #define STDOLE_MAJORVERNUM  0x1
  36. #define STDOLE_MINORVERNUM  0x0
  37. #define STDOLE_LCID         0x0000
  38.  
  39. // Version # of stdole2.tlb
  40. #define STDOLE2_MAJORVERNUM 0x2
  41. #define STDOLE2_MINORVERNUM 0x0
  42. #define STDOLE2_LCID        0x0000
  43.  
  44. /* if not already picked up from olenls.h */
  45. #ifndef _LCID_DEFINED
  46. typedef DWORD LCID;
  47. # define _LCID_DEFINED
  48. #endif
  49.  
  50. #ifndef BEGIN_INTERFACE
  51. #define BEGIN_INTERFACE
  52. #define END_INTERFACE
  53. #endif
  54.  
  55. /* pull in the MIDL generated header */
  56. #pragma option -b.
  57. #include <oaidl.h>
  58. #pragma option -b
  59.  
  60.  
  61. /*---------------------------------------------------------------------*/
  62. /*                            BSTR API                                 */
  63. /*---------------------------------------------------------------------*/
  64.  
  65. WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR *);
  66. WINOLEAUTAPI_(INT)  SysReAllocString(BSTR *, const OLECHAR *);
  67. WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR *, UINT);
  68. WINOLEAUTAPI_(INT)  SysReAllocStringLen(BSTR *, const OLECHAR *, UINT);
  69. WINOLEAUTAPI_(void) SysFreeString(BSTR);
  70. WINOLEAUTAPI_(UINT) SysStringLen(BSTR);
  71.  
  72. #ifdef _WIN32
  73. WINOLEAUTAPI_(UINT) SysStringByteLen(BSTR bstr);
  74. WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(LPCSTR psz, UINT len);
  75. #endif
  76.  
  77. /*---------------------------------------------------------------------*/
  78. /*                            Time API                                 */
  79. /*---------------------------------------------------------------------*/
  80.  
  81. WINOLEAUTAPI_(INT) DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, DOUBLE * pvtime);
  82.  
  83. WINOLEAUTAPI_(INT) VariantTimeToDosDateTime(DOUBLE vtime, USHORT * pwDosDate, USHORT * pwDosTime);
  84.  
  85. #ifdef _WIN32
  86. WINOLEAUTAPI_(INT) SystemTimeToVariantTime(LPSYSTEMTIME lpSystemTime, DOUBLE *pvtime);
  87. WINOLEAUTAPI_(INT) VariantTimeToSystemTime(DOUBLE vtime, LPSYSTEMTIME lpSystemTime);
  88. #endif
  89.  
  90.  
  91. /*---------------------------------------------------------------------*/
  92. /*                          SafeArray API                              */
  93. /*---------------------------------------------------------------------*/
  94.  
  95. WINOLEAUTAPI SafeArrayAllocDescriptor(UINT cDims, SAFEARRAY ** ppsaOut);
  96. WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY * psa);
  97. WINOLEAUTAPI_(SAFEARRAY *) SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND * rgsabound);
  98. WINOLEAUTAPI_(SAFEARRAY *) SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements);
  99. WINOLEAUTAPI SafeArrayCopyData(SAFEARRAY *psaSource, SAFEARRAY *psaTarget);
  100. WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY * psa);
  101. WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY * psa);
  102. WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY * psa);
  103. WINOLEAUTAPI SafeArrayRedim(SAFEARRAY * psa, SAFEARRAYBOUND * psaboundNew);
  104. WINOLEAUTAPI_(UINT) SafeArrayGetDim(SAFEARRAY * psa);
  105. WINOLEAUTAPI_(UINT) SafeArrayGetElemsize(SAFEARRAY * psa);
  106. WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY * psa, UINT nDim, LONG * plUbound);
  107. WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY * psa, UINT nDim, LONG * plLbound);
  108. WINOLEAUTAPI SafeArrayLock(SAFEARRAY * psa);
  109. WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY * psa);
  110. WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY * psa, void HUGEP** ppvData);
  111. WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY * psa);
  112. WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY * psa, LONG * rgIndices, void * pv);
  113. WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY * psa, LONG * rgIndices, void * pv);
  114. WINOLEAUTAPI SafeArrayCopy(SAFEARRAY * psa, SAFEARRAY ** ppsaOut);
  115. WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY * psa, LONG * rgIndices, void ** ppvData);
  116.  
  117.  
  118. /*---------------------------------------------------------------------*/
  119. /*                           VARIANT API                               */
  120. /*---------------------------------------------------------------------*/
  121.  
  122. WINOLEAUTAPI_(void) VariantInit(VARIANTARG * pvarg);
  123. WINOLEAUTAPI VariantClear(VARIANTARG * pvarg);
  124. WINOLEAUTAPI VariantCopy(VARIANTARG * pvargDest, VARIANTARG * pvargSrc);
  125. WINOLEAUTAPI VariantCopyInd(VARIANT * pvarDest, VARIANTARG * pvargSrc);
  126. WINOLEAUTAPI VariantChangeType(VARIANTARG * pvargDest,
  127.                 VARIANTARG * pvarSrc, USHORT wFlags, VARTYPE vt);
  128. WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG * pvargDest,
  129.                 VARIANTARG * pvarSrc, LCID lcid, USHORT wFlags, VARTYPE vt);
  130.  
  131. // Flags for VariantChangeType/VariantChangeTypeEx
  132. #define VARIANT_NOVALUEPROP 0x1
  133. #define VARIANT_ALPHABOOL   0x2 // For VT_BOOL to VT_BSTR conversions,
  134.                                 // convert to "True"/"False" instead of
  135.                                 // "-1"/"0"
  136. #define VARIANT_NOUSEROVERRIDE   0x4    // For conversions to/from VT_BSTR,
  137.                     // passes LOCALE_NOUSEROVERRIDE
  138.                     // to core coercion routines
  139.  
  140.  
  141. /*---------------------------------------------------------------------*/
  142. /*                Vector <-> Bstr conversion APIs                      */
  143. /*---------------------------------------------------------------------*/
  144.  
  145. WINOLEAUTAPI VectorFromBstr (BSTR bstr, SAFEARRAY ** ppsa);
  146. WINOLEAUTAPI BstrFromVector (SAFEARRAY *psa, BSTR *pbstr);
  147.  
  148.  
  149. /*---------------------------------------------------------------------*/
  150. /*                     VARTYPE Coercion API                            */
  151. /*---------------------------------------------------------------------*/
  152.  
  153. /* Note: The routines that convert *from* a string are defined
  154.  * to take a OLECHAR* rather than a BSTR because no allocation is
  155.  * required, and this makes the routines a bit more generic.
  156.  * They may of course still be passed a BSTR as the strIn param.
  157.  */
  158.  
  159. /* Any of the coersion functions that converts either from or to a string
  160.  * takes an additional lcid and dwFlags arguments. The lcid argument allows
  161.  * locale specific parsing to occur.  The dwFlags allow additional function
  162.  * specific condition to occur.  All function that accept the dwFlags argument
  163.  * can include either 0 or LOCALE_NOUSEROVERRIDE flag. In addition, the
  164.  * VarDateFromStr functions also accepts the VAR_TIMEVALUEONLY and
  165.  * VAR_DATEVALUEONLY flags
  166.  */
  167.  
  168. #define VAR_TIMEVALUEONLY   ((DWORD)0x00000001)    /* return time value */
  169. #define VAR_DATEVALUEONLY   ((DWORD)0x00000002)    /* return date value */
  170.  
  171. WINOLEAUTAPI VarUI1FromI2(SHORT sIn, BYTE * pbOut);
  172. WINOLEAUTAPI VarUI1FromI4(LONG lIn, BYTE * pbOut);
  173. WINOLEAUTAPI VarUI1FromR4(FLOAT fltIn, BYTE * pbOut);
  174. WINOLEAUTAPI VarUI1FromR8(DOUBLE dblIn, BYTE * pbOut);
  175. WINOLEAUTAPI VarUI1FromCy(CY cyIn, BYTE * pbOut);
  176. WINOLEAUTAPI VarUI1FromDate(DATE dateIn, BYTE * pbOut);
  177. WINOLEAUTAPI VarUI1FromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags, BYTE * pbOut);
  178. WINOLEAUTAPI VarUI1FromDisp(IDispatch * pdispIn, LCID lcid, BYTE * pbOut);
  179. WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL boolIn, BYTE * pbOut);
  180. WINOLEAUTAPI VarUI1FromI1(CHAR cIn, BYTE *pbOut);
  181. WINOLEAUTAPI VarUI1FromUI2(USHORT uiIn, BYTE *pbOut);
  182. WINOLEAUTAPI VarUI1FromUI4(ULONG ulIn, BYTE *pbOut);
  183. WINOLEAUTAPI VarUI1FromDec(DECIMAL *pdecIn, BYTE *pbOut);
  184.  
  185. WINOLEAUTAPI VarI2FromUI1(BYTE bIn, SHORT * psOut);
  186. WINOLEAUTAPI VarI2FromI4(LONG lIn, SHORT * psOut);
  187. WINOLEAUTAPI VarI2FromR4(FLOAT fltIn, SHORT * psOut);
  188. WINOLEAUTAPI VarI2FromR8(DOUBLE dblIn, SHORT * psOut);
  189. WINOLEAUTAPI VarI2FromCy(CY cyIn, SHORT * psOut);
  190. WIN